import sqlite3

def init_database(db_name='steam_games.db'):
    """初始化SQLite数据库"""
    conn = None
    try:
        conn = sqlite3.connect(db_name)
        c = conn.cursor()

        # 创建表
        c.execute('''CREATE TABLE IF NOT EXISTS games (
            appid TEXT PRIMARY KEY,
            游戏名称 TEXT,
            上架时间 TEXT,
            最终价格 TEXT,
            原价 TEXT,
            折扣 TEXT,
            评价总结 TEXT,
            评价等级 TEXT,
            照片路径 TEXT,
            游戏链接 TEXT,
            游戏平台 TEXT
        )''')

        conn.commit()
        print(f"数据库 {db_name} 创建成功！")

    except sqlite3.Error as e:
        print(f"数据库操作错误: {e}")
        if conn:
            conn.rollback()
    except Exception as e:
        print(f"创建数据库时发生错误: {e}")
    finally:
        if conn:
            conn.close()

def check_data_exists(appid, db_name='steam_games.db'):
    """检查指定appid的数据是否已存在于数据库中"""
    conn = None
    try:
        conn = sqlite3.connect(db_name)
        c = conn.cursor()
        
        # 查询指定appid的数据
        c.execute('SELECT appid FROM games WHERE appid = ?', (appid,))
        result = c.fetchone()
        
        return result is not None  # 如果找到数据返回True，否则返回False
        
    except sqlite3.Error as e:
        print(f"数据库查询错误: {e}")
        return False
    except Exception as e:
        print(f"查询数据时发生错误: {e}")
        return False
    finally:
        if conn:
            conn.close()

def write_data(game_data, db_name='steam_games.db'):
    """将游戏数据写入数据库
    
    Args:
        game_data (dict): 包含游戏信息的字典
        db_name (str): 数据库文件名
    """
    conn = None
    try:
        conn = sqlite3.connect(db_name)
        c = conn.cursor()
        
        # 检查数据是否已存在
        if check_data_exists(game_data['appid'], db_name):
            print(f"游戏 {game_data['游戏名称']} (appid: {game_data['appid']}) 已存在于数据库中")
            return False
            
        # 插入数据
        c.execute('''INSERT INTO games (
            appid, 游戏名称, 上架时间, 最终价格, 原价, 折扣, 
            评价总结, 评价等级, 照片路径, 游戏链接, 游戏平台
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''', (
            game_data['appid'],
            game_data['游戏名称'],
            game_data['上架时间'],
            game_data['最终价格'],
            game_data['原价'],
            game_data['折扣'],
            game_data['评价总结'],
            game_data['评价等级'],
            game_data['照片路径'],
            game_data['游戏链接'],
            game_data['游戏平台']
        ))
        
        conn.commit()
        print(f"成功写入游戏: {game_data['游戏名称']} (appid: {game_data['appid']})")
        return True
        
    except sqlite3.Error as e:
        print(f"数据库写入错误: {e}")
        if conn:
            conn.rollback()
        return False
    except Exception as e:
        print(f"写入数据时发生错误: {e}")
        if conn:
            conn.rollback()
        return False
    finally:
        if conn:
            conn.close()

if __name__ == '__main__':
    init_database() 